å†™ä¸‹è¿™ç¯‡æ–‡ç« çš„æ—¶å€™ï¼Œè¿™ä¸ªæ–°çš„TCP拥塞控制算法——BBRå·²ç»ç«äº†ä¸€æ®µæ—¶é—´äº†ï¼Œä¼˜åŠ¿å¯ä»¥å‚è§ Linux Kernel 4.9 ä¸çš„ BBR 算法与之å‰çš„ TCP 拥塞控制相比有什么优势?,里é¢è¯´çš„å·²ç»éžå¸¸å…¨é¢äº†
在Digital Oceançš„CentOS7系统的VPS上开å¯BBR记录如下:
先更新系统
$ yum update -y
å®‰è£…å†…æ ¸ï¼Œç›®å‰CentOSå·²ç»å¯ä»¥é€šè¿‡elrepoæºæ¥æ›´æ–°4.9å†…æ ¸
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
$ yum --enablerepo=elrepo-kernel install kernel-ml -y
æŸ¥çœ‹å†…æ ¸æ˜¯å¦å®‰è£…æˆåŠŸ
$ awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
出现类似返回
0 : CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-327.36.3.el7.x86_64) 7 (Core)
3 : CentOS Linux (3.10.0-327.28.2.el7.x86_64) 7 (Core)
4 : CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core)
5 : CentOS Linux, with Linux 3.10.0-123.el7.x86_64
把 CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 设置æˆé»˜è®¤å†…æ ¸
$ grub2-set-default 0
一般情况下,这里就应该é‡å¯ç³»ç»Ÿä½¿ä½¿grub生效了,但由于Digital Oceançš„é™åˆ¶ï¼ŒDO的用户è¦å…ˆåœ¨DOçš„åŽå°æŠŠå†…æ ¸åˆ‡æ¢åˆ°GrubLoader v0.2(相当于自定义å§ï¼‰ï¼Œç„¶åŽå†é‡å¯ç³»ç»Ÿ
在Digital OceanåŽå°å°†Kernelæ›´æ¢ä¸ºGrubLoader v0.2
$ reboot
æŸ¥çœ‹å†…æ ¸æ˜¯å¦æ›´æ¢æˆåŠŸ
$ uname -r
编辑/etc/sysctl.conf
ï¼ŒåŠ å…¥å¦‚ä¸‹å†…å®¹
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
ä¿å˜ç”Ÿæ•ˆ
sysctl -p
查看当å‰å†…æ ¸TCP设置
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
如果结果都有bbr
ï¼Œåˆ™è¯´æ˜Žå†…æ ¸å·²å¼€å¯BBR算法,执行:
lsmod | grep bbr
显示tcp_bbr
说明BBRå·²æ£å¸¸å¯åЍ
至于用了BBR之åŽåˆ°åº•é€Ÿåº¦æœ‰å¤šå°‘æ”¹è¿›å‘¢ï¼Œæˆ‘ä¸ªäººå…¶å®žå¹¶æ²¡æœ‰æ„Ÿè§‰åˆ°æœ‰ç‰¹åˆ«æ˜¾è‘—çš„æ•ˆæžœï¼ˆç½‘ä¸Šä¼ è¨€çš„æ•ˆæžœç®€ç›´å¤¸å¼ ï¼‰ã€‚è€Œä¸”Google的测试报告也并没有说适用于所有情况,所谓BBR代替CUBICæˆä¸ºTCP默认的拥塞控制算法,大概还相当é¥è¿œå§
Github:BBR
å¼€å¯TCP BBR拥塞控制算法
Linux Kernel 4.9 ä¸çš„ BBR 算法与之å‰çš„ TCP 拥塞控制相比有什么优势?
CentOS7安装4.9å†…æ ¸å¹¶å¼€å¯BBR
BBR: Congestion-Based Congestion Control